Method and Apparatus for Synchronizing Configuration Changes Across Multiple Components of an Industrial Control System

ABSTRACT

An industrial control system includes an industrial controller and a series of bridge devices logically connected in a cascaded arrangement to facilitate data communication between the industrial controller and an I/O device. The control system further includes a programming interface connected to the industrial controller to provide modifications to the program and component configuration. Modifications are provided to the controller and to the bridge devices across the network in a multiphase operation that includes a first operation that cascades the modifications from the industrial controller and to the bridge devices, and a second operation that cascades a apply command to the industrial controller and to the bridge devices instructing the industrial controller and the bridge devices to update the configuration of each of the devices based on the modifications provided in the first phase only upon acknowledgement that the industrial controller and each of the bridge devices has accepted the modifications.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.12/413,712 filed Mar. 30, 2009, entitled “Universal Network Adaptor forIndustrial Control Networks,” hereby incorporated by reference.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

- - -

BACKGROUND OF THE INVENTION

The present invention relates to industrial control systems forcontrolling machinery and processes and, in particular, to an adapterarchitecture to enable a programmable controller to operate with avariety of different networks in a manner that makes the differencesbetween the networks invisible to the controller.

Industrial control systems are special-purpose computers for controllingmachinery and equipment. In contrast to more conventional computersystems, industrial control systems generally provide greaterflexibility and hardware configuration (to match a variety of differentcontrol applications) and have a higher standard of reliability andpredictability necessary for real-time control of complex machinery.

Greater flexibility in hardware configuration is typically obtained by amodular and distributed construction in which an industrial controlsystem may be assembled of multiple modules, for example, a centralprogrammable controller connected to an arbitrary number of I/O modules,the latter providing communication with various switches and sensors onthe machine.

The various components of the industrial control system may be connectedtogether by means of a high-speed “control network” using a variety ofspecial protocols that ensure predictable, timely and reliablecommunication of control data. For example, control network protocolsmay employ “connected messaging” in which the bandwidth of the networkand buffer space is pre-allocated to dedicated “connections” to preventlost or unpredictably delayed data transfer that can occur in standardnetwork protocols such as Ethernet.

A variety of different control networks have been developed by differentmanufacturers and for different control applications, each havingdifferent communication protocols. Protocol as used herein refers notsimply to the format of the data (e.g. baud rate, the number of bits,error correction codes and the like), but also to the steps ofestablishing a connection, assigning addresses to connections, handlingconnection errors, sending acknowledgment messages and the like.

Often, the programmable controller of an industrial control system mustcommunicate with control components connected over multiple differentcontrol network types. This is normally done through the use ofspecial-purpose software tools which produce programs runningconcurrently with the industrial control program to provide thenecessary network handling (a.k.a. gateway) logic for the differentnetworks. These software tools increase the complexity of programmingand of configuring the industrial control system by adding additionalprogramming steps and operating programs. As new networks are integratedinto the control system, the control program may need to be revised, anoften costly exercise. In addition, the additional communicationoverhead can adversely affect the operation of the control system.

SUMMARY OF THE INVENTION

The present invention provides a general, architecture for adapters ofI/O devices on different control networks. The adapter worksindependently of the controller and thus allows the controller to beprogrammed as if all devices were on a single common network-type,simplifying the programming task and decreasing the demands on theprogrammable controller. The adapters per this invention rely on adownloadable script library, where the script library contains thescripts necessary to invoke the control network-specific anddevice-specific functions (e.g. download configuration, verify theidentity, open a messaging or I/O connection, translating data types,converting Endianess for each type of I/O device connected to it. As newclasses of I/O Devices are required, new device-specific scripts areadded to the downloadable library. Only in the event that new,network-specific functions are introduced will the firmware of theadapter need to be updated.

Specifically then, the present invention provides a network interfacefor a programmable controller controlling a plurality of I/O nodes ondifferent I/O networks using different communication protocols. Thenetwork interface may include a set of adapter interfaces providinghardware connections to the different I/O networks of the I/O nodes andat least one controller network interface circuit providing a hardwareconnection to a controller network communicating with the programmablecontroller.

The network interface also provides a memory holding a network adapterprogram, script files, and configuration files, and a processorexecuting a program that:

receive and store in memory, script files associated with the differentnetworks and I/O devices for execution to translate between protocols ofthe programmable logic network and the particular I/O network;

receive from the programmable controller and store in memoryconfiguration files associated with particular I/O networks and describeconfiguration parameters for the particular I/O networks;

before communication between an I/O node and the programmablecontroller, configure the I/O networks according to the associatedconfiguration file; and

in response to communication between an I/O node and the programmablecontroller, execute a script associated with the I/O network totranslate between protocols of the I/O network and controller network.

It is thus one object of the invention to permit the programmablecontroller to communicate with I/O nodes as if they were directlyconnected to the controller network. It is an ancillary object of theinvention to simplify the programming of industrial control systems, andto permit their ready adaptation of control programs to different or newcontrol networks and I/O Devices.

The controller network interface circuit may provide networkfunctionality that is a superset of the I/O networks.

It is thus an object of the invention to provide a controller interfacethat does not constrain the functionality of the I/O networks.

The controller network may operate according to a connected messagingprotocol in which communications between devices are subject topre-designated connections specifying message timing, frequency, andsize.

It is thus an object of the invention to provide connected messaging inthe connection between the network interface and the programmablecontroller such as may accommodate the necessary logical mapping betweendifferent networks through the use of the connection model.

The script files may be received from the programmable controller.

It is thus an object of the invention to permit updating andinitialization of the adapter by the programmable logic controller andthus to provide a single repository for controller information.

The controller network may use the EtherNet/IP protocol.

It is thus an object of the invention to leverage off a well-establishedhigh-end control network.

The scripts may further include a mapper translating between addresseson the controller network and addresses on the I/O network.

It is thus an object of the invention to accommodate different addressstructures associated with different control networks in a mannerinvisible to the control program.

The I/O networks may include EtherNet/IP, DeviceNet, ControlNet as wellas SerBus, 69-Bus, HART, ModBus, and Foundation FieldBus.

It is thus an object of the invention to provide for integration amongcontrol networks of widely varying types and performance.

The I/O network interface circuits may provide electrical connectorsallowing them to be removably attached to a common bus.

It is thus an object of the invention to provide a practical method ofaccommodating future network types and physical layers.

The network adapter program may execute a scanning protocol forsequentially exchanging data between the programmable controller andeach of the I/O nodes on a regular schedule with a predetermined order.

It is thus an object of the invention to provide a data exchange methodthat provides for desired repeatability and control system operation.

The programmable controller and I/O nodes may communicate among eachother using a buffer table, the buffer table subject to distinct to readand write cycles.

It is thus an object of the invention to eliminate the need for theprogrammer of the control program to attend to synchronization issues.

The network adapter may include a housing holding the components of thenetwork adapter and physically independent from the programmable logiccontroller and the I/O nodes.

It is thus an object of the invention to permit the adapter to be usedwith a wide variety of different programmable controllers both existingin the field and to be designed.

The foregoing and other aspects of the invention will appear in thefollowing description. In the description, reference is made to theaccompanying drawings, which form a part hereof, and in which there isshown by way of illustration a preferred embodiment of the invention.Such embodiment does not necessarily represent the full scope of theinvention, however, and reference must be made to the claims herein forinterpreting the scope of the invention.

BRIEF DESCRIPTION OF THE FIGS.

FIG. 1 is a block diagram of a prior control system having aprogrammable controller communicating with a variety of I/O modules overmultiple networks;

FIG. 2 is a Venn diagram showing the functionality of the controllernetwork as a superset of the I/O networks;

FIG. 3 is a figure similar to FIG. 1 showing use of the adapterappliance of the present invention presenting a single logical networkto the programmable controller made up of different proprietary physicalnetworks;

FIG. 4 is a perspective view of the adapter appliance of FIG. 2 showingmodular construction allowing the introduction of different I/O networkinterface circuits to a common backplane;

FIG. 5 is a block diagram of the adapter appliance of FIG. 4 showingdata structures generated by the programmable controller and downloadedto the adapter appliance;

FIG. 6 is a logical diagram of the adapter appliance showing use ofconfiguration files and interpreted scripts to provide for flexibleaccommodation of new I/O network types and features;

FIG. 7 is a simplified schematic view of an industrial control systemincluding a distributed arrangement of controlled components;

FIG. 8 is a schematic representation of a programming interface andindustrial controller communicatively linked to programming andconfiguring the industrial controller and the distributed arrangement ofcontrolled components shown in FIG. 7;

FIG. 9 is a diagram illustrating a transaction for providingconfiguration data to the industrial controller and the controlledcomponents;

FIG. 10 is a schematic representation of a configuration file includingconfiguration data for each of the controlled components shown in FIG.7;

FIG. 11 is a flow chart setting forth the steps carried out by acontroller or root device for communicating and implementingconfiguration changes in the controlled components shown in FIG. 7;

FIG. 12 is a flow chart setting forth the steps carried out by a parentdevice to transmit messages to a child device; and

FIG. 13 is a flow chart setting for the steps carried out by a childdevice to implement changes provided thereto by a parent device.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT Network AdapterAppliance

Referring now to FIG. 1, a control system 10 may include, for example, aprogrammable controller 12 such as a Logix™ controller commerciallyavailable from Rockwell Automation Inc. and including one or morenetwork modules 14 a and 14 b each connected to a different controlnetwork 16 a, 16 b respectively. Such control networks 16 may includeEtherNet/IP, DeviceNet, ControlNet, SerBus, 69-Bus, HART, ModBus, andFoundation FieldBus, however the present invention is not limited tothese network designs but is generally intended to work with arbitrarynetwork protocols including those yet to be defined.

Referring momentarily to FIG. 2, some of the control networks 16, forexample, control network 16 b, may provide a substantially greaterfunctionality 22 (for example in terms of setting network parameters,operating in different modes, obtaining diagnostic information, etc.)than other networks 16 a, reflecting, in part, specialization fordifferent tasks and different hardware capabilities of the attacheddevices. These functionalities 22 together define a meta-network 16′having a functionality 22 practically capable of matching the combinedfunctionalities 22 of the networks 16 a and 16 b.

Referring now to FIG. 3, this superset network 16′ provides a model fora common network 16 c used in the present invention to connect theprogrammable controller 12 to the integration appliance 26 of thepresent invention. Preferably the network 16 c is a powerful existingnetwork, for example EtherNet/IP, providing the highest level offunctionality of the various networks 16. It is expected that the commonnetwork 16 c will be a connected messaging system which provides a highlevel of network security reliability and diagnosis information as wellas allows all data transfers to be handled as well-defined connections,greatly simplifying the creation of a control program.

The integration appliance 26 holds a set of proprietary networkinterface cards 28, each providing a physical connection to differentnetworks 16 a, 16 b, and 16 d connected to different I/O devices 18. Theintegration appliance 26, as will be described in greater detail below,permits the programmer of the programmable controller 12 to work with asingle logical network (common network 16 c) thereby greatly simplifyingthe programming task and immunizing the control program created by theprogrammer against changes resulting from changes or additions to thenetworks 16 a, 16 b, and 16 d communicating with the I/O devices 18. Asnoted above, the I/O devices 18 communicate input or output signalstransmitted over the networks 16 a, 16 b, and 16 d from and to a controlprocess 20 according to techniques well known in the art.

Referring to FIG. 4, the integration appliance 26, in one embodiment,provides for a housing 30 having a rear wall supporting an electronicinterconnection backplane 32. The housing 30 provides slots eachaccepting a different proprietary network interface card 28 associatedwith a different network 16 a, 16 b, and 16 d. The proprietary networkinterface cards 28 are held within housings 29 that may be insertedremovably into the housing 30 so that the internal proprietary networkinterface card 28 attaches to the backplane 32 by means of multi-pinconnectors 34 on the rear of the housings 29.

The integration appliance 26 also holds a processor module 36 and acontroller network interface card 38 communicating with common network16 c. The processor module 36 and controller network interface card 38also connect to the backplane 32 allowing intercommunication of allconnected components.

Referring now to FIG. 5, the processor module 36 includes a processor 40preferably employing an internal extension of the backplane 32 tocommunicate with a memory 42 according to conventional computerarchitectures. The memory 42 may hold data and stored programs, thelatter including an operating system 44 and an interpreter 45, includinglibrary functions 46. The library functions 46 provide common networkfunctions, such as data copying, data table lookups, and scheduling, aswell as data priority and quality of service implementations. The memory42 also includes a set of downloaded scripts 48 being programs executedby the interpreter 45 as will be described. In addition, the memory 42holds configuration files 50 providing configuration information for thenetworks 16 a, 16 b, and 16 d. Generally, as will be described below,there will be one script for each different proprietary networkinterface card 28 and one configuration file 50 for each of the networks16 a, 16 b, and 16 d associated different proprietary network interfacecards 28. The configuration files 50 may also provide configurationinformation for each I/O device 18. The configuration files 50 andscripts 48 may be generated by a control program development system 52,for example held in the programmable controller 12 when the programmablecontroller 12 is used as a development platform, or held in afreestanding computer 54. In this way, a single development environmentmay be used to create a control program 56 that will be executed on theprogrammable controller 12 to provide commands to and receive signalsfrom the I/O devices 18 over common networks 16 c and to create theconfiguration files 50 and scripts 48 which may then be downloaded tothe integration appliance 26 upon initialization of the control system.This approach permits the programmable controller 12 to provide a singlerepository for all data necessary for the control system 10 while stillpermitting use of the integration appliance 26.

Referring now to FIGS. 4 and 5, as will be explained in more detailbelow, the integration appliance 26 uses the scripts 48 to translatebetween the model of the common network 16 c and the individual networks16 a, 16 b, 16 d, etc. The scripts 48 thereby permit customizableintercommunication between the common networks 16 c and the otherproprietary networks 16 a, 16 b, and 16 d. This intercommunication maybe exploited in transmitting the necessary configuration files 50 fromthe integration appliance 26 to the I/O devices regardless of theintervening network 16 a, 16 b, and 16 d.

Referring still to FIG. 6, in this regard, the operating system 44 andinterpreter 45 together implement a scanner 58 that coordinates areception of messages on networks 16 a, 16 b, and 16 d from theproprietary network interface card 28, ideally, according to a regularschedule to improve consistency of operation of the control system. In afirst phase of this schedule and for each proprietary network interfacecard 28, the scanner 58 selects the appropriate script 48 (as executedby the interpreter 45 using the library functions 46) and, according toa mapper 60 using a mapping table generated from the configuration files50, places the data received from the I/O devices 18 into an I/O buffertable 62 according to a logical address of that data per each of thenetworks 16 a, 16 b, and 16 d. Concurrently, controller networkinterface card 38 receives data from the programmable controller 12 overnetwork 16 c for placement in the I/O buffer table 62 according to thelogical address of the network 16 c. In a preferred embodiment, the datafrom the common network 16 c is not remapped but defines the commonaddresses of all exchanged data.

In a second phase of this schedule, the scanner 58 reads out values fromthe I/O buffer table 62 obtained from the programmable controller 12 inthe first phase, and forwards this data on networks 16 a, 16 b, 16 dusing the appropriate script 48 and per the logical mapping of themapper 60 to the appropriate I/O device 18. At the same time, thescanner 58 reads out values from the I/O buffer table 62 obtained fromthe I/O devices 18 in the first phase, and forwards them to programmablecontroller 12. In this latter case the scripts 48 are not required asthe data has been previously reformatted into the proper form for commonnetwork 16 c.

The I/O buffer table 62 may be filled by data pushed from the I/Odevices 18 or pulled by scanner 58 in arbitrary order (e.g.asynchronously), but will normally be read out and thus exchangedbetween the programmable controller 12 and the I/O devices 18 in aparticular order at given intervals so as to produce a control systemthat tends to provide consistent behavior without race conditions.

The use of scripts 48 allows great flexibility in the treatment ofdifferent networks 16 a, 16 b, and 16 d both existing and that may bedeveloped in the future. For functions provided by network 16 c whichare not supported by a given network 16 a, 16 b, or 16 d, often thescripts 48 can provide a pseudo-function implementing the missingfunction through a combination of functions that are supported by thenetwork 16 a, 16 b, or 16 d. Alternatively, the scripts 48 may mapfunctions supported by network 16 c to lesser functions supported by thenetworks 16 a, 16 b, or 16 d when that would be appropriate. When nomapping can occur, the scripts 48 may throw an exception to provide anerror code to the programmable controller 12. The overall operation ofthe scripts 48 is to free the programmer from concern about theidiosyncrasies of particular networks 16 a, 16 b, and 16 d.

While the integration appliance 26 is preferably self-contained to workwith a variety of different programmable controllers 12, it will beunderstood that the integration appliance 26 may alternatively beincorporated into the programmable controller 12 itself.

Method of Synchronizing Configuration Changes

Referring now to FIG. 7, an industrial control system 110 for which thepresent invention may be applicable generally includes a controller 112,a router 114, a linking or bridging device 116 such as a scanner, anadapter module 118, and an I/O device or module 120. For purposes ofillustration, a simplified control system is shown, but it is understoodthat in a real-world application, the control system may includenumerous I/O devices, routers, linking devices, and adapters to controlan industrial process, or a portion thereof. Data is communicatedbetween the controller 112 and the I/O module 120 through the router114, linking device 116, and adapter 118 across multiple datacommunications network segments 122. Each network segment 122 may be anyone of a number of network technologies used between two components,such as ControlNet, EtherNet/IP and the like. As is understood in theart, the I/O device 120 converts the digital data received over thecommunications network 122 from the adapter 118 into output signals 125(either digital or analog) in a form suitable for connection to itsportion of the industrial process 124. The I/O module 120 may alsoreceive digital or analog signals 125 from the industrial process 124and convert the signals to digital data suitable for transmission on thecommunications network 122 across the network segment 122 to the adaptermodule 118 and ultimately across the various other network segments 122to the industrial controller 112.

The industrial controller 112 executes a stored program to control theindustrial process 124. The stored program is typically created using adedicated software package or suite, such as the RSLogix suite ofproducts commercially available from Rockwell Automation, Milwaukee,Wis. As schematically shown in FIG. 8, a workstation 126 may interfacewith the industrial controller 112 to enable a programmer to load ormodify the control program or the configuration of any of the controlsystem components.

In one embodiment, the industrial controller 112 is programmed using anobject-oriented programming language; however, it is understood thatother programming languages may be used. The workstation 126 mayinterface with the industrial controller 112 to modify, add, or deletevarious objects stored in a memory 128 of the industrial controller 112and used to implement its functionality. In particular, the objects mayinclude I/O objects needed to manage the configuration of the hardwareof the I/O modules 120. Exemplary objects include symbols, data tables,templates, I/O maps, and I/O connections. Collectively, the objectsmaintained in the memory 128 that implement the functionality of theindustrial controller 112 may be referred to as the control program ofthe industrial controller. Hence, the workstation 126 provides aprogramming interface for updating the control program of the industrialcontroller 112. An exemplary framework for communicating between theworkstation 126 and the industrial controller 112 for programming theindustrial controller 112 is described in U.S. Pat. No. 6,819,960,entitled “Industrial Controller Automation Interface,” subject toassignment to the assignee of the present application, and incorporatedherein by reference in its entirety.

As shown in FIG. 8, within its memory 128, the industrial controller 112maintains an object database 130. In general, the object database 130lists the states of the various control program objects used by theindustrial controller 112. The format employed by the industrialcontroller 112 for indexing objects may vary.

The workstation 126 provides a programming interface 132 (i.e., softwareapplication) through which a user may interface with and program theindustrial controller 112 and other components of the control system. Asknown in the art, a network interface 131 enables the industrialcontroller 112 to communicate with the programming interface 132. Theprogramming interface 132 programs the industrial controller 112 usingtransactions that are presented to the industrial controller through thenetwork interface 131 across a communications network 133 as known inthe art. Each transaction includes a plurality of operations, which areoperated on by the industrial controller 112, but kept in a pendingstate until the transaction is committed. The programming interface 132maintains a synchronized copy of the object database 130′.

The workstation 126 implements a transaction technique where operationsperformed by the workstation 126 for changing objects in the industrialcontroller 112 are grouped into a single transaction that is not fullyacted upon until a Commit signal issued by the workstation 126 isreceived by the industrial controller 112. Operations interrupted oraborted prior to receiving the Apply signal may be rolled back, leavingthe industrial controller 112 in its original state. The workstation 126may communicate with the industrial controller 112 to modify aspects ofthe controller's operation, such as the control program. The workstation126 may also communicate with the industrial controller 112 to configureand enable additional I/O functionality. From the standpoint of theuser, a transaction is an atomic event, in that it entirely succeeds oris aborted.

Turning to FIG. 9, a diagram illustrating the components of an exemplarytwo-phase transaction 134 for providing configuration data through thechain of controlled components is provided. The first phase of thetransaction 134 includes a begin transaction command 136 followed by oneor more operation commands 138. The operation commands 138 are followedby a Commit transaction 140. The commit transaction 140 triggers the endof the first phase of the transaction 134. The second phase, issuance ofthe Apply or Abort transaction command 144, of the transaction 134 isnot initiated until feedback in the form of an Accept or Reject response146 is received (or communication is deemed timed out) from each of thecontrolled components. In this regard, a wait cycle 142 is initiated asthe controller 112 waits for feedback from the controlled components.Each component provides an Accept or Reject response 146 to its parent.Once the Accept or Reject response 146 has been received at thecontroller 112, an Apply or Abort transaction command 144 is provided tothe controlled components, which signals the end of the second phase ofthe transaction 134. As further shown in FIG. 9, each component goes toa pending state 148 after transmitting the Accept/Reject response 146whereupon the component waits for either an Apply command or an Abortcommand.

If each of the controlled components provides an Accept response, thenan Apply transaction command is communicated from the controller 112 tothe controlled components and the workstation. However, if a Rejectmessage is received from any of the controlled components, theindustrial controller 112 issues an Abort transaction command to each ofthe controlled components and the workstation. In this regard, changesin the configuration of the controlled components are made globally,i.e., each of the controlled components must affirmatively indicate areadiness to accept the proposed configuration changes, before suchchanges are made. Thus, changes to the I/O specific configurationprocesses 150 are not made unless each of the upstream controlledcomponents also accepts the changes contained in the configuration file.

The programming interface 132 sends the transaction 134 one operationcommand 138 at a time, and the industrial controller 112 preprocesseseach operation 138 in turn, but keeps the objects of the operationcommands 138 in a pending state, e.g., in a buffer. Preprocessing mayinvolve checking the syntax of the operation, reserving memory, checkingthe state of an existing object, instantiating a pending object, etc.For example, a new object may have a state of “Pending Create,” amodified object may have a state of “Pending Modify,” and an object tobe deleted may have a state of “Pending Delete.”

Memory is reserved for the objects as their associated operationcommands 138 are received and preprocessed. In the case where an objectis to be modified or deleted, the industrial controller 112 ensures thatthe requested operation can be performed (i.e., the referenced objectexists and is in a state where modification or removal is allowed), butthe actual completion of the action is deferred. The values for apending modify object remain unmodified and the actual change values arecached so that they can be applied (or discarded) during the Apply orAbort command 144. Operation commands 138 that modify pending newobjects need not be deferred as they do not affect a current object.

As described above, changes to the object database 130 are not committeduntil an Accept/Reject response 146 is received from the first networkelement (which represents an Accept/Reject response from all subordinatedevices). Thus, a two-phase or two-step transaction protocol is used inwhich changes are sent in a series of first transactions 36-40, and thesecond set of operations 140, 146, and 144 result in the changesproposed in the first phase being wholly accepted or rejected by all ofthe components.

As described above, the industrial controller 112 is one of thecomponents of the industrial control system 110. Referring to now toFIG. 110, a representative configuration file 152 is shown. Theconfiguration file 152 may, in fact, take the form of multiple filesgenerated using the programming interface 132, but for purposes ofillustration, a single configuration file is shown in FIG. 110. Theconfiguration file 152 includes configuration data for each of thecontrolled components. In this regard, the configuration file 152includes an industrial controller configuration data block 154, a routerconfiguration data block 156, a scanner configuration data block 158, anadapter configuration data block 160, and an I/O module configurationdata block 162.

For the industrial process 124 to be effectively controlled, theconfiguration of the controlled components should be in sync with thecontrol program. That is, each component should operate according to themost recent configuration data provided for that component. Moreover,given the interrelationship of the components, a given component shouldoperate according to the configuration data that other components of thesystem believe define operation of the given component. Thus, thepresent invention provides a transaction process designed to ensure thatconfiguration changes are accepted by all of the components before suchchanges are applied.

Referring now to FIG. 111, a process 163 carried out by the controller112 (or other “root” originator device for distributing theconfiguration file 152 to the affected components (114, 116, 118, or120) of the industrial control system 110) begins at block 164 withreception of the new configuration file at block 165 from theprogramming interface 132 or programmatic modifications made to theconfiguration file by the control program. As shown in FIG. 110, theconfiguration file may include new configuration data blocks for some orall of the controlled components of the industrial control system. Theconfiguration file is then communicated to the controlled components atblock 166 in a series of transaction commands as described above and inFIG. 112. More particularly, the configuration file is cascaded to eachof the controlled components with each of the controlled componentsstoring their respective portions of the configuration file in localtemporary memory, such as a buffer. Each controlled component evaluatesthe portion(s) of the configuration file that pertain to it as describedin FIG. 113, returning the results of its analysis to its parent, whichare ultimately reflected in the response that the controller receives atblock 167 to determine if the changes in the configuration file can beaccepted as a whole across the effected control components.

If all of the control components have indicated that they can accept theproposed changes, then the controller applies the changes to itsinternal copy of the configuration file at block 168, and sends theApply message to the effected children in block 169 to complete thesecond phase of the overall transaction. After the response from thechild is received (or the timeout expires) at block 170, the controllerreturns a Success response to the programming interface at block 171. Itis understood that even if communications to one or more controlcomponents are lost during the Apply phase (represented by block 172),the new configuration will still ultimately be applied to the device, asa reconnect process block will attempt to apply the most recentconfiguration before the I/O connection to the device is restored atblock 173.

Returning for a moment to the Acceptance indication at block 167, if anyone of the control components has indicated that it cannot accept thenew configuration for any reason, the controller discards the pendingconfiguration file updates 174, sends an Error response to theprogramming interface at block 175, and sends an Abort message to theappropriate child(ren) in block 176. Even if the connection to one ormore control components is lost during the Apply phase (represented byblock 177), the previous configuration will be maintained in the devicethrough the reconnect process 178. Once the configuration files havebeen updated, the process 163 ends at block 180.

In FIG. 112, the process 181 that a parent uses to send the applicableportion of the new configuration file to its child is presented.

The process 181, once initiated at block 182, continues withtransmission of transaction to a child at block 183. If a successresponse has been received from the child at block 184, the parentdevice transmits the transaction operation to the child at block 184. Ifthe transaction was successfully transmitted, block 186, and there areno more transactions to transmit to the child, block 187, a Committransaction is presented to the child at block 188. However, if thereare additional operations, the process loops back to block 185. Also, ifthe transmission was not successful, an error signal is returned atblock 189. If the Commit transaction was successfully received by thechild as indicated by reception of an Accept response at block 190, areturn Accept command 191 is transmitted from the parent to the child.If an Accept response was not received, a Reject transmission isreturned to the child device at block 192. The process is complete atblock 193 after either an Accept, Error, or Reject communication iscommunicated from the parent to the child. In this regard, after eachrequest, the parent waits for the results of the child's evaluation,which will be indicated in the response. If an error (or connectionrelated error, such as timeout) is indicated, the first phase will beterminated early at block 193. In the error case, any descendants of thechild being acted on will never become aware that the configurationupdate was attempted. If all of the operations are successful, the Phase1 processing returns an Accept indication at block 191.

FIG. 13 presents the process that each child performs as it evaluatesthe new configuration file being transmitted within the multi-phasetransaction. The process 194 once initiated at block 195 begins withreception of a Begin Transaction request from the parent in block 196.In block 197, the child determines whether or not present state permitsit to accept a transaction request. If acceptable at block 198, aSuccess response is returned to the parent at block 199, and the childwaits for a sequence of transaction operations. Otherwise, an Errorresponse is transmitted at block 200 to the parent and the updatingprocess is aborted at block 201 and the process ends at 202.

Once the child has determined that the present state allows it to acceptthe transaction request and a corresponding success communication istransmitted to the parent, the child determines if a valid message hasbeen received from the parent at block 202. If not, the transaction isaborted at block 201. Otherwise, the process 194 continues to block 203and determines if the message is an operation or a Commit transaction.If the communication is a transaction operation, the operation isevaluated at block 204. If acceptable at block 205, any resources thatthe child will need to apply the changes necessary are reserved in block206, or else an Error response is returned to the parent in block 207ultimately resulting in aborting of the transaction at block 208 andtermination of the process at block 202. If the operation is acceptableand the resources have been allocated, a success response is transmittedto the parent at block 209.

If the message is a Commit transaction, the child must then determine ifit can accept the proposed changes in their entirety at block 210. Ifthe changes are acceptable at block 211, the child allocates thenecessary resources at block 212 and then determines if its childsupports the transaction at block 213. If so, the child extends thecascade by forwarding the applicable changes to its child at block 214if it supports the multi-phase transaction as determined at block 213.If the child(ren) accept the cascaded message at block 215 an Acceptresponse message is sent to the parent at block 216. Similarly, if thechild does not support the transactions as determined at block 213, anAccept response is transmitted to the parent device at block 216. If anyof the descendants cannot support the changes, the Reject will bereturned in block 217.

The process continues to block 218 to determine if a valid message hasbeen received from the parent. If not, the transaction is aborted atblock 219 and the process ends at block 202. Otherwise, the childdetermines if the received message is either an Apply message or anAbort message at block 220. If the received message is an Apply message,the changes to the configuration files for the child are applied atblock 221. The child then determines if its child(ren) support thetransaction at block 222. If so, an Apply message is sent to thechild(ren) at block 224 signaling the child(ren) to update itsconfiguration files. If the child(ren) does not support the transaction,the process returns to block 216. It should be noted that in some cases,it may be necessary to determine the I/O component (i.e. the finalelement that does not support multi-phase transactions) beforeindicating the acceptability of the proposed changes. To support thiscase, the process will attempt to perform an I/O Specific ConfigurationProcess. This is just an extension of the cascade concept to include thefirst control component that does not directly support the multi-phasetransaction. The programming interface or control program logic willspecify whether the final element's evaluation of the proposedconfiguration changes should be included

If the message from the parent is an Abort command, the processdetermines if the child supports such a transaction at block 225. If so,an Abort message is transmitted to the child device at block 227.Ultimately, whether the child supports the transaction or not, thetransaction is aborted at block 208 and the process ends at block 202.In this regard, if a transaction includes multiple chains from thecontroller to I/O components that do not share the same immediateparent, the Abort message only needs to be cascaded down the chains thatindicated their ability to Accept the proposed changes.

It should be noted that if the commit command received at block 210 isunacceptable, the transaction is also aborted at block 208 whereupon theprocess ends at block 202.

The present invention has been described in terms of the preferredembodiment, and it is recognized that equivalents, alternatives, andmodifications, aside from those expressly stated, are possible andwithin the scope of the appending claims.

1. An industrial control system comprising: an industrial controllerthat executes a stored program to control an industrial process, theindustrial controller including: a plurality of components comprising:(i) a programmable logic controller; (iii) at least one I/O devicecommunicating with the programmable logic controller and adapted toexchange I/O data between the industrial controller and the industrialprocess according to configuration data; (ii) at least one networkdevice communicating between the programmable logic controller and theI/O device according to configuration data; and a programming interfaceexecuting on the industrial controller and operative to: (i) providemodifications to at least one of the stored program and configurationdata; and (ii) provide the modifications of at least one of the storedprogram and configuration data to the components in a multiphaseoperation that includes a first phase that provides the modifications tothe components, and a second phase that applies the modifications tocomponents for use in controlling the industrial process if and only ifall the components indicate that they will be able to support thosemodifications.
 2. The industrial control system of claim 1 wherein theprogramming interface provides the modifications to at least one of thestored program and configuration data to the industrial controller andthe industrial controller passes the modifications to each component. 3.The industrial control system of claim 1 wherein at least one networkdevice includes a router, a scanner, and an adapter, and wherein theindustrial controller, the router, the scanner, the adapter, and the I/Odevice are operatively linked to one another in a cascade arrangement.4. The industrial control system of claim 3 wherein modifications toeach component's configuration data are first provided to the industrialcontroller and the modifications are then cascaded to the router, thescanner and the adapter.
 5. The industrial control system of claim 4wherein the router, the scanner, and the adapter each include atemporary memory location in which the modifications are temporarilystored before they are applied.
 6. The industrial control system ofclaim 1 wherein a command providing application of the modifications ispropagated sequentially to the components.
 7. The industrial controlsystem of claim 1 wherein the components analyze the modificationsbefore they are applied to provide a signal indicating whether each ofthe components can support the modification.
 8. The industrial controlsystem of claim 7 wherein the I/O device includes a motor drive.
 9. Theindustrial control system of claim 7 wherein the components each storethe modifications in a temporary memory location and provide anacknowledgement signal if they can support the modification, and whereina command is provided to the components to apply the modifications onlyin response to an acknowledgment single from all components receivingthe modifications.
 10. An industrial control system for controllingoperation of an industrial process, the control system comprising: aplurality of control devices that execute a control program forinterfacing with the industrial process, the plurality of controldevices arranged in a cascade arrangement; and a programming interfacecommunicatively linked to the plurality of control devices and operativeto modify the control program stored by each of the plurality of controldevices only if all of the control devices affirmatively indicate areadiness to implement the modified program.
 11. The industrial controlsystem of claim 10 wherein the programming interface provides themodified program to a first control device of the plurality of controldevices and the modified program is cascaded to the remaining controldevices of the plurality of the control devices in a series of messages.12. The industrial control system of claim 11 wherein each of theplurality of control devices includes a buffer that temporarily storesthe modified program.
 13. The industrial control system of claim 12wherein each of the plurality of control devices provides a confirmationsignal to an upstream control device of the cascade arrangement inreceipt of the modified configuration and receipt of such confirmationfrom its child, if applicable.
 14. The industrial control system ofclaim 10 wherein the modified configuration is not stored by each of thecontrol devices unless all of the control devices signal Acceptance oftheir respective portions of the modified configuration.
 15. Theindustrial control system of claim 10 wherein the modified configurationis provided to each of the plurality of control devices in a first phaseand a second phase, wherein the first phase comprises a transmit commandinstructing each control device to evaluate and store the modifiedprogram in a temporary memory location and the second phase comprises anapply command instructing each control device to remove the modifiedconfiguration from the temporary memory location and replace the locallystored version of the configuration with the modified configuration,wherein the apply command is not issued until each of the plurality ofcontrol devices affected provides the signal affirmatively indicating areadiness to incorporate the modified configuration.
 16. The industrialcontrol system of claim 15 wherein the plurality of control devices arearranged in a cascade arrangement and the transmit command is cascadedfrom a first control device to a last control device.
 17. The industrialcontrol system of claim 16 wherein the cascade arrangement includes atleast one of the industrial controller, a router, a scanner, an adapter,and an I/O module.
 18. A method of updating the configuration locallystored by controlled devices of an industrial control system, the methodcomprising: cascading a first command sequence to the controlleddevices, the first command sequence containing proposed changes to theconfiguration; and cascading a second command to the controlled devicesupon confirmation that each of the controlled devices has accepted thefirst command sequence, the second command instructing each of thecontrolled devices to update a local version of the configuration toinclude the changes contained in the first command.
 19. The method ofclaim 18 wherein the controlled devices are arranged relative to oneanother in a cascade arrangement, and further determining if eachupstream controlled device has received an acknowledgement signal froman immediate downstream controlled device and if so providing the secondcommand to the cascade arrangement such that each upstream controlleddevice provides the second command to an immediate downstream controlleddevice.